/**
 * student.js
 * 数据操作文件模块
 * 职责：操作文件中的数据，只处理数据，不关心业务
 *
 * 这里才是我们学习 Node 的精华部分：奥义之所在
 * 封装异步 API
 */
var fs = require('fs')


var dbPath = './db.json'
/* 
获取学生列表
*/
exports.find = function (callback) {
    fs.readFile(dbPath, 'utf8', function (err, data) {
        // JSON.parse(data).students
        if (err) {
            return callback(err)
        }
        callback(null, JSON.parse(data).students)
    })
}
exports.findById = function (id, callback) {
    fs.readFile(dbPath, 'utf8', function (err, data) {
        // JSON.parse(data).students
        if (err) {
            return callback(err)
        }
        var students = JSON.parse(data).students
        var ret = students.find(function (item) {
            return item.id === parseInt(id)
        })
        callback(null, ret)
    })
}



// find(function (err,data) {

// })



/* 
添加学生
*/
exports.save = function (student, callback) {
    fs.readFile(dbPath, 'utf8', function (err, data) {
        // JSON.parse(data).students
        if (err) {
            return callback(err)
        }

        var students = JSON.parse(data).students
        //处理id不重复
        student.id = students[students.length - 1].id + 1
        //保存到数组
        students.push(student)
        //对象转换为字符串
        var fileData = JSON.stringify({
            students: students
        })
        //把字符串保存到文件中
        fs.writeFile(dbPath, fileData, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}

/* 
更新学生
*/
exports.updateById = function (student, callback) {
    fs.readFile(dbPath, 'utf8', function (err, data) {
        // JSON.parse(data).students
        if (err) {
            return callback(err)
        }
        var students = JSON.parse(data).students
        //这个统一把id改为数字形式
        student.id = parseInt(student.id)

        var stu = students.find(function (item) {
            return item.id === student.id
        })
        for (var key in student) {
            stu[key] = student[key]
        }
        //对象转换为字符串
        var fileData = JSON.stringify({
            students: students
        })
        //把字符串保存到文件中
        fs.writeFile(dbPath, fileData, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}
// updateById({

// })

/* 
删除学生
*/
exports.deleteById = function (id,callback) {
    fs.readFile(dbPath, 'utf8', function (err, data) {
        // JSON.parse(data).students
        if (err) {
            return callback(err)
        }
        var students = JSON.parse(data).students
        var deleteId = students.findIndex(function (item) {
            return item.id === parseInt(id)
        })
        students.splice(deleteId, 1)


        //对象转换为字符串
        var fileData = JSON.stringify({
            students: students
        })
        //把字符串保存到文件中
        fs.writeFile(dbPath, fileData, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}